import { login, logout, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import router, { resetRouter } from '@/router'

const state = {
  token: getToken() || localStorage.getItem('token'),
  name: '',
  avatar: '',
  introduction: '',
  roles: [],
  list: []
}

const mutations = {
  SET_TOKEN: (state, token) => {
    state.token = token
  },
  SET_INTRODUCTION: (state, introduction) => {
    state.introduction = introduction
  },
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_AVATAR: (state, avatar) => {
    state.avatar = avatar
  },
  SET_ROLES: (state, roles) => {
    state.roles = roles
  },
  SET_LIST: (state, list) => {
    //  state.permission.routes=list
    state.list = list
  }
}

const actions = {
  // user login
  login({ commit }, userInfo) {
    const { account	, password } = userInfo
    return new Promise((resolve, reject) => {
      login({ account	: account	.trim(), password: password }).then(response => {
        const { data } = response
        commit('SET_TOKEN', data.token)
        localStorage.setItem('token', data.token);
        localStorage.setItem('token-name', data.get_admin_info.name);
        setToken(data.token)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // get user info
  getInfo({ commit, state }) {
    return new Promise((resolve, reject) => {
      getInfo(state.token).then(response => {
        // console.log(response)
        const { data } = response
        // if (!data) {
        //   reject('Verification failed, please Login again.')
        // }

        const { roles, name, avatar, introduction } = data
        // roles must be a non-empty array
        // if (!roles || roles.length <= 0) {
        //   reject('getInfo: roles must be a non-null array!')
        // }

        // const menus = [
        //   {
        //     'path': '/',
        //     'component': 'Layout',
        //     'redirect': '/dashboard',
        //     'children': [
        //       {
        //         'path': 'dashboard',
        //         'name': 'dashboard',
        //         'component': 'dashboard/index',
        //         'meta': { 'title': '业务管理员首页', 'icon': '', 'affix': false,noCache: false }
        //       }
        //     ],
        //   },
        // ]
        //   {
        //     'path': '/memineapplyssage',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'mineapply/index',
        //         'name': 'mineapply',
        //         'meta': { 'title': '我的申请', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   {
        //     'path': '/examine',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'examine/index',
        //         'name': 'examine',
        //         'meta': { 'title': '我的审批', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   {
        //     'path': '/message',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'message/index',
        //         'name': 'message',
        //         'meta': { 'title': '我的消息', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   {
        //     'path': '/SystemDashboard',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'SystemDashboard/index',
        //         'name': 'SystemDashboard',
        //         'meta': { 'title': '系统管理员首页', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
         
        
        //   {
        //     'path': '/permission',
        //     'component': 'Layout',
        //     'redirect': '/permission/page',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'Permission',
        //     'meta': {
        //       'title': '系统管理员——系统管理'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'page',
        //         'component': 'permission/page',
        //         'name': 'PagePermission',
        //         'meta': {
        //           'title': '用户设置',
        //         }
        //       },
             
        //       {
        //         'path': 'role',
        //         'component': 'permission/role',
        //         'name': 'RolePermission',
        //         'meta': {
        //           'title': '角色设置',
        //         }
        //       },
        //       {
        //         'path': 'flow',
        //         'component': 'permission/flow',
        //         'name': 'flowPermission',
        //         'meta': {
        //           'title': '流程设置',
        //         }
        //       },
        //       {
        //         'path': 'directive',
        //         'component': 'permission/directive',
        //         'name': 'DirectivePermission',
        //         'meta': {
        //           'title': '部门设置'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       },
        //       {
        //         'path': 'medium',
        //         'component': 'permission/medium',
        //         'name': 'mediumPermission',
        //         'meta': {
        //           'title': '媒介结构',
        //         }
        //       },
        //       {
        //         'path': 'System',
        //         'component': 'permission/System',
        //         'name': 'SystemPermission',
        //         'meta': {
        //           'title': '系统日志',
        //         }
        //       }
        //     ]
        //   },
           
        // //  、、决策人员首页
        //   {
        //     'path': '/decision_home',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'decision_home/index',
        //         'name': 'decision_home',
        //         'meta': { 'title': '决策人员-首页', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   //决策人员合同管理
        //   {
        //     'path': '/decision_contract',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'decision_contract/index',
        //         'name': 'decision_contract',
        //         'meta': { 'title': '决策人员-合同管理', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   // 、、决策数据分析
        //   {
        //     'path': '/decision_data',
        //     'component': 'Layout',
        //     'redirect': '/decision_data/resource',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'market_dataresource1',
        //     'meta': {
        //       'title': '决策人员——数据分析'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'resource',
        //         'component': 'decision_data/resource',
        //         'name': 'decision_dataresource',
        //         'meta': {
        //           'title': '资源分析',
        //         }
        //       },
        //       {
        //         'path': 'advertising',
        //         'component': 'decision_data/advertising',
        //         'name': 'decision_dataadvertising',
        //         'meta': {
        //           'title': '广告市场分析',
        //         }
        //       },
        //       {
        //         'path': 'market',
        //         'component': 'decision_data/market',
        //         'name': 'decision_datamarket',
        //         'meta': {
        //           'title': '销售分析'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       },
        //       {
        //         'path': 'price',
        //         'component': 'decision_data/price',
        //         'name': 'decision_dataprice',
        //         'meta': {
        //           'title': '价格策略',
        //         }
        //       },
        //       {
        //         'path': 'prresource_browseice',
        //         'component': 'decision_data/resource_browse',
        //         'name': 'decision_datapresource_browse',
        //         'meta': {
        //           'title': '资源一览',
        //         }
        //       },
            
            
              
             
        //     ]
        //   },
        //   {
        //     'path': '/salesman2',
        //     'component': 'Layout',
        //     'redirect': '/salesman/contract',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'salesmanContract',
        //     'meta': {
        //       'title': '业务管理员——业务'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'contract',
        //         'component': 'salesman/contract',
        //         'name': 'salesmancontract',
        //         'meta': {
        //           'title': '合同管理',
        //         }
        //       },
        //       {
        //         'path': 'data',
        //         'component': 'salesman/data',
        //         'name': 'salesmandata',
        //         'meta': {
        //           'title': '数据接口'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       },
        //       {
        //         'path': 'maintain',
        //         'component': 'salesman/maintain',
        //         'name': 'salesmanmaintain',
        //         'meta': {
        //           'title': '基础维护',
        //         }
        //       },
        //       {
        //         'path': 'flproductow',
        //         'component': 'salesman/product',
        //         'name': 'salesmanproduct',
        //         'meta': {
        //           'title': '产品策划',
        //         }
        //       },
        //       {
        //         'path': 'resource',
        //         'component': 'salesman/resource',
        //         'name': 'salesmanresource',
        //         'meta': {
        //           'title': '资源维护',
        //         }
        //       },
        //       {
        //         'path': 'Resources_warning',
        //         'component': 'salesman/Resources_warning',
        //         'name': 'salesmanResources_warning',
        //         'meta': {
        //           'title': '资源预警',
        //         }
        //       },
        //       {
        //         'path': 'schedule',
        //         'component': 'salesman/schedule',
        //         'name': 'salesmanschedule',
        //         'meta': {
        //           'title': '排期管理',
        //         }
        //       },
        //       {
        //         'path': 'report',
        //         'component': 'salesman/report',
        //         'name': 'salesmanreport',
        //         'meta': {
        //           'title': '报告中心',
        //         }
        //       }
        //     ]
        //   },
        //   {
        //     'path': '/read_and_edit_home',
        //     'component': 'Layout',
               
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'read_and_edit_home/index',
        //         'name': 'read_and_edit_home',
        //         'meta': { 'title': '编审-首页', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   {
        //     'path': '/read_and_edit',
        //     'component': 'Layout',
        //     'redirect': '/read_and_edit/material',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'read_and_editmaterial',
        //     'meta': {
        //       'title': '编审——工作台'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'material',
        //         'component': 'read_and_edit/material',
        //         'name': 'read_and_edit/material',
        //         'meta': {
        //           'title': '素材管理',
        //         }
        //       },
        //       {
        //         'path': 'schedule',
        //         'component': 'read_and_edit/schedule',
        //         'name': 'read_and_editschedule',
        //         'meta': {
        //           'title': '排期管理'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       }
        //     ]
        //   },
        //   // 销售首页
        //   {
        //     'path': '/market_home',
        //     'component': 'Layout',
        //     'children': [
        //       {
        //         'path': 'index',
        //         'component': 'market_home/index',
        //         'name': 'market_home',
        //         'meta': { 'title': '销售-首页', 'icon': '', noCache: true }
        //       }
        //     ]
        //   },
        //   // 、、销售数据分析
        //   {
        //     'path': '/market_data',
        //     'component': 'Layout',
        //     'redirect': '/market_data/resource',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'market_dataresource',
        //     'meta': {
        //       'title': '销售——数据分析'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'resource',
        //         'component': 'market_data/resource',
        //         'name': 'market_dataresource2',
        //         'meta': {
        //           'title': '资源分析',
        //         }
        //       },
        //       {
        //         'path': 'advertising',
        //         'component': 'market_data/advertising',
        //         'name': 'market_dataadvertising',
        //         'meta': {
        //           'title': '广告市场分析',
        //         }
        //       },
        //       {
        //         'path': 'analysis',
        //         'component': 'market_data/analysis',
        //         'name': 'market_dataanalysis',
        //         'meta': {
        //           'title': '销售分析'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       },
            
            
              
             
        //     ]
        //   },

        //   // 、、、、销售
        //   {
        //     'path': '/market_manage',
        //     'component': 'Layout',
        //     'redirect': '/market_manage/advertiser',
        //     'alwaysShow': true, // will always show the root menu
        //     'name': 'market_manage',
        //     'meta': {
        //       'title': '销售——销售管理'
        //       // 'icon': 'lock',
        //     },
        //     'children': [
        //       {
        //         'path': 'resource1',
        //         'component': 'market_manage/resource',
        //         'name': 'market_manageresource',
        //         'meta': {
        //           'title': '资源一览',
        //         }
        //       },
        //       {
        //         'path': 'advertiser1',
        //         'component': 'market_manage/advertiser',
        //         'name': 'market_manageadvertiser',
        //         'meta': {
        //           'title': '广告主管理',
        //         }
        //       },
        //       {
        //         'path': 'agency1',
        //         'component': 'market_manage/agency',
        //         'name': 'market_manageagency',
        //         'meta': {
        //           'title': '代理管理'
        //           // if do not set roles, means: this page does not require permission
        //         }
        //       },
        //       {
        //         'path': 'contract1',
        //         'component': 'market_manage/contract',
        //         'name': 'market_managecontract',
        //         'meta': {
        //           'title': '合同管理',
        //         }
        //       },
        //       {
        //         'path': 'customization1',
        //         'component': 'market_manage/customization',
        //         'name': 'market_managecustomization',
        //         'meta': {
        //           'title': '定制服务',
        //         }
        //       },
        //       {
        //         'path': 'project1',
        //         'component': 'market_manage/project',
        //         'name': 'market_manageproject',
        //         'meta': {
        //           'title': '项目报备',
        //         }
        //       },
            
              
             
        //     ]
        //   },
        // ]
        var s=['admin']
        commit('SET_ROLES', s)
        commit('SET_NAME', 'name')
        var a='https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif'
        commit('SET_AVATAR', a)
       var b='I am a super administrator'
        commit('SET_INTRODUCTION', b)
        commit('SET_LIST', data)
        resolve(data)
      }).catch(error => {
        reject(error)
      })
    })
  },

  // user logout
  logout({ commit, state, dispatch }) {
    return new Promise((resolve, reject) => {
      logout(state.token).then(() => {
        commit('SET_TOKEN', '')
        commit('SET_ROLES', [])
        localStorage.removeItem('token');
        removeToken()
        resetRouter()

        // reset visited views and cached views
        // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485
        dispatch('tagsView/delAllViews', null, { root: true })

        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // remove token
  resetToken({ commit }) {
    return new Promise(resolve => {
      commit('SET_TOKEN', '')
      commit('SET_ROLES', [])
      removeToken()
      resolve()
    })
  },

  // // dynamically modify permissions
  // changeRoles({ commit, dispatch }, role) {
  //   return new Promise(async resolve => {
  //     const token = role + '-token'

  //     commit('SET_TOKEN', token)
  //     setToken(token)

  //     const { roles } = await dispatch('getInfo')

  //     resetRouter()

  //     // generate accessible routes map based on roles
  //     const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true })
  //     console.log(accessRoutes)
  //     // dynamically add accessible routes
  //     router.addRoutes(accessRoutes)

  //     // reset visited views and cached views
  //     dispatch('tagsView/delAllViews', null, { root: true })

  //     resolve()
  //   })
  // }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
